02c0ff21a09b9178bd5b73d18ce2d11cf8da5c79,src/main/java/htsjdk/samtools/SAMRecordUtil.java,SAMRecordUtil,reverseComplement,#SAMRecord#Collection#Collection#,54
Before Change
value = StringUtil.reverseString((String) value);
}
else if (value.getClass().isArray()) {
if (value instanceof byte[]) reverseArray((byte[]) value);
else if (value instanceof short[]) reverseArray((short[]) value);
else if (value instanceof int[]) reverseArray((int[]) value);
else if (value instanceof float[]) reverseArray((float[]) value);
After Change
final byte[] readBases = unsafe ? rec.getReadBases() : rec.getReadBases().clone();
SequenceUtil.reverseComplement(readBases);
rec.setReadBases(readBases);
final byte qualities[] = unsafe ? rec.getBaseQualities() : rec.getBaseQualities().clone();
reverseArray(qualities);
rec.setBaseQualities(qualities);
// Deal with tags that need to be reverse complemented
if (tagsToRevcomp != null) {
for (final String tag: tagsToRevcomp) {
Object value = rec.getAttribute(tag);
if (value != null) {
if (value instanceof byte[]) {
value = unsafe ? value : ((byte[]) value).clone();
SequenceUtil.reverseComplement((byte[]) value);
}
else if (value instanceof String) {
value = SequenceUtil.reverseComplement((String) value);
}
else throw new UnsupportedOperationException("Don't know how to reverse complement: " + value);
rec.setAttribute(tag, value);
}
}
}
// Deal with tags that needed to just be reversed
if (tagsToReverse != null) {
for (final String tag : tagsToReverse) {
Object value = rec.getAttribute(tag);
if (value != null) {
if (value instanceof String) {
value = StringUtil.reverseString((String) value);
}
else if (value.getClass().isArray()) {
if (value instanceof byte[]) {
value = unsafe ? value : ((byte[]) value).clone();
reverseArray((byte[]) value);
}
else if (value instanceof short[]) {
value = unsafe ? value : ((short[]) value).clone();